package rbac.service;

import java.util.Set;

import rbac.entity.RbacUser;


/**
 * RBAC service 接口. 负责验证一个用户是否具有权限访问某个资源.
 * 
 * @author Huadi
 * @author Zoufengyang
 */
public interface AccessControlService {

	/**
	 * 检查一个用户是否有权限访问某个资源。
	 * 
	 * @param rbacUser
	 *            用户实体.
	 * @param resource
	 *            完整的 Action URL.
	 * @return <code>true</code> if the check passed, otherwise
	 *         <code>false</code>.
	 */
    public boolean isHavePermission(RbacUser rbacUser, String resource);

	/**
	 * 检查一个用户是否有权限访问某个资源。
	 * 
	 * @param userName
	 *            用户名称.
	 * @param resource
	 *            完整的 Action URL.
	 * @return <code>true</code> if the check passed, otherwise
	 *         <code>false</code>.
	 */
	public boolean isHavePermission(String userName, String resource);

	/**
	 * 根据用户获取生成需要的URL
	 * 
	 * @param rbacUser
	 * @return
	 */
    public Set<String> getResources(RbacUser rbacUser);

}
